package com.tzy.note.base.jvm;

public class Math {
    public static final int initData = 666;
    public static User user = new User();

    public int compute(){ //一个方法对应一块栈帧内存区域
        /**
         * int a = 1;
         * 字节码执行流程：
         *      0.iconst_1 将int类型常量1压入操作数栈，
         *      1.istore_1 将int类型值存入局部变量1(局部变量1: -> a)
         *          局部变量1为什么是a,而不是局部变量0是a，
         *          因为还有一个this,局部变量0是this当前对象引用
         *          这行代码意思是：在局部变量表中给变量a分配一小块内存区，常量1从操作数栈出栈，赋值给变量a
         *      综合：常量1压栈，为局部变量a分配内存，常量1赋值给变量a
         */
        int a = 1;
        int b = 2;
        /**
         *  5.iload_1 从局部变量1(a)中装载int类型值 压入操作数栈
         *  6.iload_2 从局部变量2(b)中装载int类型值 压入操作数栈
         *  7.iadd 执行int类型的加法(a+b)
         *  8.bipush 将一个8位带符号整数(10)压入栈
         *  9.imul 执行int类型的乘法
         *  10.ireturn 从当前方法返回int
         */
        int c = (a + b) * 10;
        return c;
    }
    public static void main(String[] args) {
        Math math = new Math();
        math.compute();
        System.out.println("Test");
    }
}
